package server

import (
	"exam_jxk/pkg/models"
	"github.com/gin-gonic/gin"
	"github.com/gomodule/redigo/redis"
	"go.uber.org/zap"
	"gorm.io/gorm"
	"net/http"
)

func NewServer(db *gorm.DB, logger *zap.Logger, redisPool *redis.Pool, config *models.ServerConfig) *Service {
	logger.Debug("init server")
	return &Service{
		config:    config,
		db:        db,
		logger:    logger,
		redisPool: redisPool,
	}
}

func (s Service) RegisterHttpServer(g *gin.Engine) {

	// 初始化静态资源
	g.LoadHTMLGlob("./www/html/*")    // html模板初始化
	g.Static("/www/img", "./www/img") // 静态资源初始化
	g.Static("/www/js", "./www/js")   // 同上
	g.Static("/www/css", "./www/css") // 同上

	//注册路由服务
	_index := g.Group("")
	{
		_index.GET("/", func(c *gin.Context) { // 主页重定向
			c.Redirect(http.StatusFound, "/index")
			return
		})
		_index.GET("/index", s.httpIndex)       // 主页
		_index.GET("/protocol", s.httpProtocol) // 考前协议

		_exam := _index.Group("/exam") //考试模块
		{
			_exam.GET("/start", s.httpExamStart) // 考试开始
			_exam.POST("/keep", s.httpExamKeep)  // 心跳报文，防止意外情况
			_exam.POST("/end", s.httpExamEnd)    // 交卷
		}
	}

}
